package cn.kbyue.security.utils;

import cn.kbyue.security.security.DefinedUserDetails;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import lombok.extern.slf4j.Slf4j;

/**
 * jwt 工具类
 *
 * @author xl
 * @date 2020/4/24 23:13
 */
@Slf4j
public class JwtTokenUtil {
    public static String createToken(DefinedUserDetails user) {
        String token = Jwts.builder()
                .setId(user.getUser().getUserId())
                .setSubject(user.getUser().getAccount())
                .setIssuedAt(new Date())
                .setIssuer("kbblog")
                .setExpiration(new Date(System.currentTimeMillis() + JwtProperties.EXPRIRED * 1000))
                // 注: 这里如果启动说 这里的 base64encode 类找不到，将项目的 jdk 环境换成 jdk8
                .signWith(SignatureAlgorithm.HS512, JwtProperties.SECRET)
                .compact();

        if (Env.isDebug) {
            log.info(">> user: {}, 生成token: {}", user.getUser(), token);
        }
        return token;
    }
}
